package com.kiki.song.domain.recommend;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedDeque;

/**
 * 用户行为实体
 */
@Data
public class UserProfile {
    String userId;
    ConcurrentLinkedDeque<String> recentPlays = new ConcurrentLinkedDeque<>(); // 最近播放队列（维护最新10条）
    List<String> favorites = new ArrayList<>();  // 收藏歌曲集合
    Map<String, Integer> searchKeywords = new ConcurrentHashMap<>(); // 搜索关键词及频次
    /**
     * 更新最近播放记录（自动淘汰旧记录）
     */
    public void updatePlayHistory(String songId) {
        if (recentPlays.size() >= 10)
        {
            recentPlays.removeFirst();
        }else{
            recentPlays.addLast(songId);
        }

    }

    /**
     *  更新搜索关键词
     * @param keyword
     */
    public void updateSearchKeywords(String keyword) {
        searchKeywords.put(keyword, searchKeywords.getOrDefault(keyword, 0) + 1);
    }

    /**
     *  更新收藏歌曲
     * @param songId
     */
    public void updateFavorites(String songId) {
        favorites.add(songId);
    }
}
